package com.haima.sage.bigdata.api.frame.datatype;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.haima.sage.bigdata.api.common.NameUtils;

public enum DataType {
    // 存储数字
    // 目标Int
    Int("int"),
    // 目标Long，
    Long("long"),
    // 目标Float，
    Float("float"),
    // 目标Double，
    Double("double"),

    // 存储字符串
    // 目标String，值为13位的数字
    Text("string"),

    // 存储日期
    // 目标java.lang.Date
    Date("date"),
    // 目标java.sql.Time
    Time("time"),// TODO 暂时忽略
    // 目标Long，存储日期
    LongDate("longdate"),
    // 目标String，存储日期
    TextDate("textdate"), // TODO 暂时参数+验证实现

    // 目标Boolean
    Boolean("boolean");

    //自定义字段
    private String value;

    //自定义字段
    private String values;

    //构造方法
    DataType(String values) {
        this.values = values;
    }

    @JsonValue
    public String getValue() {
        return values;
    }

    // 覆盖方法
    @Override
    public String toString() {
        return this.values;
    }

    @JsonCreator
    public static DataType getInstance(String type) {
        type = NameUtils.trans(type);
        for (DataType item : values()) {
            String tmp = NameUtils.trans(item.getValue());
            if (tmp.equals(type)) {
                return item;
            }
        }
        return null;
    }
}
